home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- MODULE: _rputf.h
- PURPOSE: recio character delimited floating point output functions
- COPYRIGHT: (C) 1994 William Pierpoint
- VERSION: 2.00
- RELEASE: April 15, 1994
- *****************************************************************************/
-
- #ifndef _RPUTF_H
- #define _RPUTF_H
-
- #include "recio.h"
-
- extern int _rstatus(REC *rp, int mode);
- extern int _rputc(REC *rp, int ch);
-
- #define rfp(rp) ((rp)->r_fp)
- #define rcol(rp) ((rp)->r_colno)
- #define rfldch(rp) ((rp)->r_fldch)
-
- /* macro to put character delimited floating point number */
- #define rput_fn( /* define function to put number to record stream */\
- fn_type, /* defined function number type */\
- fn_name, /* defined function name */\
- cv_type, /* conversion function type */\
- cv_name, /* conversion function name */\
- cv_dig) /* conversion number of significant digits */\
- \
- int /* return 0 on success; !0 on error */\
- fn_name( /* put string to record stream */\
- REC *rp, /* record pointer */\
- fn_type num) /* number to put to stream */\
- { \
- int err=EOF; /* return error (0=no error; !0=error) */\
- if (!_rstatus(rp, R_WRITE)) { \
- rfldno(rp)++; \
- /* if not first field, put field separator */\
- if (rfldno(rp) > 1) { \
- err = _rputc(rp, rfldch(rp)); \
- if (err) goto done; \
- } \
- cv_name((cv_type)num, (cv_dig), _r_nsbuf); \
- err = fputs(_r_nsbuf, rfp(rp)); \
- if (err==EOF) { \
- rseterr(rp, R_ENOPUT); \
- goto done; \
- } else { \
- rcol(rp) += strlen(_r_nsbuf); \
- err = 0; \
- goto done; \
- } \
- } \
- done: \
- return err; \
- }
-
- #endif
-